;;;;;; constants.scm - Scheme Constants module.    -*- Mode: Scheme -*-
;;;;;; Author: Erik Silkensen <silkense@colorado.edu>
;;;;;; Version: 13 Jun 2009

#lang scheme

;;; This module defines several constants for use throughout the compiler.

(provide (all-defined-out))

(define (class->type class)
  (string-append "L" class ";"))

(define *proc-class* "jeme/Procedure")
(define *proc-type* (class->type *proc-class*))

(define *module-class* "jeme/Module")
(define *module-type* (class->type *module-class*))

(define *global-env* "GLOBAL_ENV")

(define *env-class* "jeme/Environment")
(define *env-type* (class->type *env-class*))

(define *obj-class* "jeme/lang/SchemeObject")
(define *obj-type* (class->type *obj-class*))

(define *bool-class* "jeme/lang/SchemeBoolean")
(define *bool-type* (class->type *bool-class*))

(define *str-class* "jeme/lang/SchemeString")
(define *str-type* (class->type *str-class*))

(define *pair-class* "jeme/lang/SchemePair")
(define *pair-type* (class->type *pair-class*))

(define *vector-class* "jeme/lang/SchemeVector")
(define *vector-type* (class->type *vector-class*))

(define *symbol-class* "jeme/lang/SchemeSymbol")
(define *symbol-type* (class->type *symbol-class*))

(define *num-class* "jeme/math/SchemeNumber")
(define *num-type* (class->type *num-class*))

(define *complex-class* "jeme/math/SchemeComplex")
(define *complex-type* (class->type *complex-class*))

(define *real-class* "jeme/math/SchemeReal")
(define *real-type* (class->type *real-class*))

(define *int-class* "jeme/math/SchemeInteger")
(define *int-type* (class->type *int-class*))
